package com.aaa.service.impl;

import com.aaa.dao.UserMapper;
import com.aaa.entity.User;
import com.aaa.service.UserService;
import com.aaa.utils.JwtUtil;
import com.aaa.vo.LoginVo;
import com.aaa.vo.Result;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;

/**
 * -*- coding:utf-8 -*-
 *
 * @author 太阳偷渡青山
 * @software IntelliJ IDEA
 * @date 2022/11/19 9:43
 * @Description
 */
@Slf4j
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Override
    public Result<String> login(LoginVo loginVo) {
        log.info("login = ", loginVo);
        // 1.将页面提交的密码进行md5加密处理
        String password = DigestUtils.md5DigestAsHex(loginVo.getPassword().getBytes());
        // 2.根据页面提交的用户名username查询数据库
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getEmail, loginVo.getEmail());
        User user = getOne(queryWrapper);

        // 3.如果没有查询到则返回登录失败结果
        if (user == null) {
            return Result.error("用户名不存在");
        }
        // 4.密码比对，如果不正确返回登录失败的结果
        if (!password.equals(user.getPassword())) {
            return Result.error("密码错误");
        }

        // 5.查看员工状态，如果为已禁用状态，则返回员工已经禁用的结果
        if (user.getIsFlag() == 1) {
            return Result.error("该账号被禁用");
        }

        // 6.登录成功，将员工的id存入JWT并返回成功的结果
        String token = JwtUtil.createToken(user);
        return Result.success(token);
    }
}
